--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/frontend/serviceWorkerBuild.test.js dff83e198e78b84ec225e53ce3ab119f598b0a01 (dff83e19) Text, 3.49 KB
T8b949e// SPDX-License-Identifier: 0BSD
Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3itTb4b4b4, Te6edf3expect Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3readFileSync Tb4b4b4} Tff7b72from Ta5d6ff"node:fs"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3resolve Tb4b4b4} Tff7b72from Ta5d6ff"node:path"Tb4b4b4;
Tff7b72import Tb4b4b4{
Te6edf3DEFAULT_SHELL_PRECACHETb4b4b4,
Te6edf3renderServiceWorkerSourceTb4b4b4,
Te6edf3stripEsmForServiceWorkerTb4b4b4,
Te6edf3writeServiceWorkerTb4b4b4,
Tb4b4b4} Tff7b72from Ta5d6ff"../../scripts/build/generate_service_worker.mjs"Tb4b4b4;
Tff7b72const Te6edf3ROOT Tff7b72= Te6edf3resolveTb4b4b4(Tff7b72importTb4b4b4.Te6edf3metaTb4b4b4.Te6edf3dirnameTb4b4b4, Ta5d6ff"../.."Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"service worker build"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"template bootstrap wires runtime prune, claim, and fetch resolve"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3template Tff7b72= Te6edf3readFileSyncTb4b4b4(Te6edf3resolveTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"meshchatx/src/frontend/sw/service-worker.template.js"Tb4b4b4)Tb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3templateTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"createShellRuntime"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3templateTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"pruneOldShellCaches"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3templateTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"skipWaiting"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3templateTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"clients.claim"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3templateTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"navigationPreload"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3templateTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"UPDATE_MESSAGE_TYPE"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3templateTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"resolveFetch"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3templateTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"__MESHCHATX_SW_BUILD_ID__"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3templateTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"__MESHCHATX_SW_PRECACHE_JSON__"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"stripEsmForServiceWorker removes imports and exports"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3stripped Tff7b72= Te6edf3stripEsmForServiceWorkerTb4b4b4(
Ta5d6ff'import { x } from "./y.js";\nexport function foo() { return 1; }\nexport const BAR = 2;\n'
Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3strippedTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"import "Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3strippedTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"export "Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3strippedTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"function foo()"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3strippedTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"const BAR = 2"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"renderServiceWorkerSource inlines policy+runtime and injects build id"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3source Tff7b72= Te6edf3renderServiceWorkerSourceTb4b4b4(Tb4b4b4{
Te6edf3buildIdTff7b72: Ta5d6ff"test-build"Tb4b4b4,
Te6edf3precacheUrlsTff7b72: Te6edf3DEFAULT_SHELL_PRECACHETb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3sourceTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'const BUILD_ID = "test-build"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3sourceTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'"/boot-theme.js"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3sourceTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"function classifyShellRequest"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3sourceTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"function createShellRuntime"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3sourceTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"function findForbiddenCachedUrls"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3sourceTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"__MESHCHATX_SW_BUILD_ID__"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3sourceTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"__MESHCHATX_SW_PRECACHE_JSON__"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3sourceTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/^import /mTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3sourceTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"pruneOldShellCaches"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"public service-worker.js is generated for dev without placeholders"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3result Tff7b72= Te6edf3writeServiceWorkerTb4b4b4(Tb4b4b4{ Te6edf3buildIdTff7b72: Ta5d6ff"dev" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3publicSw Tff7b72= Te6edf3readFileSyncTb4b4b4(Te6edf3resultTb4b4b4.Te6edf3outfileTb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3publicSwTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'const BUILD_ID = "dev"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3publicSwTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"createShellRuntime"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3publicSwTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"resolveFetch"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3publicSwTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"__MESHCHATX_SW_"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"main.js uses client register helpers and skips Electron"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3main Tff7b72= Te6edf3readFileSyncTb4b4b4(Te6edf3resolveTb4b4b4(Te6edf3ROOTTb4b4b4, Ta5d6ff"meshchatx/src/frontend/main.js"Tb4b4b4)Tb4b4b4, Ta5d6ff"utf8"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mainTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"ElectronUtils.isElectron()"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mainTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"decideControllerChangeReload"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mainTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"serviceWorkerRegisterOptions"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mainTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"isIgnorableServiceWorkerRegistrationError"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mainTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"controllerchange"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mainTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"registration.update()"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mainTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"visibilitychange"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────